// eslint.config.mjs
import globals from "globals"; // 常见全局变量的库（如 window、document 等）
import pluginJs from "@eslint/js"; // ESLint 官方提供的 JavaScript 规则插件
import tseslint from "typescript-eslint"; // TypeScript ESLint 插件，允许解析和检查 TypeScript 代码
import pluginVue from "eslint-plugin-vue"; // Vue.js 的 ESLint 插件，用于解析和检查 Vue 文件
import standard from "eslint-config-standard";
export default [
  { 
      files: ["**/*.{js,mjs,cjs,ts,vue}"] 
  }, // 指定 ESLint 要检查的文件类型，包括 JS、MJS、CJS、TS 和 Vue 文件
  { 
     languageOptions: {
      globals: globals.browser,
      ecmaVersion: 12, // 使用最新的 ECMAScript 语法
      sourceType: "module", // 代码是 ECMAScript 模块
    },
  }, // 为浏览器环境设置全局变量选项，允许代码中使用这些全局变量而不会触发 ESLint 警告
  pluginJs.configs.recommended, // 使用 ESLint 官方推荐的 JavaScript 规则配置
  ...tseslint.configs.recommended, // 使用 TypeScript ESLint 推荐的规则配置
  ...pluginVue.configs["flat/essential"], // 使用 Vue.js 插件提供的基本规则配置
  { 
      files: ["**/*.vue"], // 针对 Vue 文件做特殊配置
      languageOptions: { 
          parserOptions: { parser: tseslint.parser }
      } // 指定 TypeScript ESLint 解析器来解析 Vue 文件中的 `<script>` 块
  },
    pluginJs.configs.recommended,
  pluginVue.configs["flat/essential"],
  standard,
    {
    rules: {
      indent: ["error", 2], // 缩进使用 2 个空格
      "linebreak-style": ["error", "unix"], // 使用 Unix 风格的换行符
      quotes: ["error", "single"], // 使用单引号
      semi: ["error", "never"], // 语句末尾不加分号
      "no-console": process.env.NODE_ENV === "production" ? "warn" : "off", // 生产环境中警告 console 使用，开发环境中关闭规则
      "no-debugger": process.env.NODE_ENV === "production" ? "warn" : "off", // 生产环境中警告 debugger 使用，开发环境中关闭规则
    },
  },
];
